# -*- coding: utf-8 -*-
"""
@Time ： 2023/12/19 15:38
@Auth ： 李天天
"""
import redis



class RedisPublish:
    """
    redis发布类

    Args:
        host: redis主机地址
        port: redis端口号
        password: redis密码

    """

    def __init__(self, host, port, password):
        self.host = host
        self.port = port
        self.password = password

    def publish(self, channel, message):
        """
        发布消息

        Args:
            channel: 要发布的频道
            message: 要发布的消息

        Returns:
            执行结果
        """

        # 连接redis
        redis_client = redis.StrictRedis(host=self.host, port=self.port, password=self.password, decode_responses=True)

        # 执行publish命令
        result = redis_client.publish(channel, message)

        return result







class RedisHelper:
    def __init__(self, host, port, password=None):
        self.conn = redis.Redis(host=host, port=port, password=password)

    def set(self, key, value, ex=None, px=None, nx=False, xx=False):
        """
        设置 key 的值为 value，可以设置过期时间。

        :param key: 键
        :param value: 值
        :param ex: 过期时间，单位为秒，默认为 None，表示永不过期
        :param px: 过期时间，单位为毫秒，默认为 None，表示永不过期
        :param nx: 如果 key 不存在，则设置，如果 key 存在，则不设置，默认为 False
        :param xx: 如果 key 存在，则设置，如果 key 不存在，则不设置，默认为 False
        :return: 设置成功返回 True，否则返回 False
        """
        return self.conn.set(key, value, ex=ex, px=px, nx=nx, xx=xx)

    def get(self, key):
        """
        获取 key 的值。

        :param key: 键
        :return: 值，如果 key 不存在，则返回 None
        """
        return self.conn.get(key).decode()

    def delete(self, key):
        """
        删除 key 。

        :param key: 键
        :return: 删除成功返回 True，否则返回 False
        """
        return self.conn.delete(key)

    def exists(self, key):
        """
        判断 key 是否存在。

        :param key: 键
        :return: 如果 key 存在，则返回 True，否则返回 False
        """
        return self.conn.exists(key)

    def keys(self, pattern=None):
        """
        获取符合 pattern 的所有 key。

        :param pattern: 匹配模式
        :return: 符合 pattern 的所有 key 列表
        """
        return self.conn.keys(pattern)

    def expire(self, key, seconds):
        """
        设置 key 的过期时间为 seconds 秒。

        :param key: 键
        :param seconds: 过期时间，单位为秒
        :return: 设置成功返回 True，否则返回 False
        """
        return self.conn.expire(key, seconds)

    def ttl(self, key):
        """
        获取 key 的过期时间，单位为秒。

        :param key: 键
        :return: 过期时间，如果 key 不存在或没有设置过期时间，则返回 -1
        """
        return self.conn.ttl(key)


if __name__ == '__main__':
    do_redis = RedisHelper(host="116.62.245.174", port="6379", password="li123456")
    do_redis.set(key="admin_token", value="2223", ex="86400")
    res = do_redis.get(key="admin_token")
    res1 = do_redis.exists(key="admin_token")
    if res:
        print("存在")
    res2 = do_redis.exists(key="ss")
    if res2:
        print("存在2")
    print(res)
